#include<iostream>
#include<pthread.h>
#include<cstdlib>
#include<string>
#include<unistd.h>
using namespace std;

// class Request
// {
// public:
//     Request(int start,int end,const string& threadname)
//     :start_(start),end_(end),threadname_(threadname)
//     {}
// private:
//     int start_;
//     int end_;
//     string threadname_;
// };
// class Response
// {
// public:
//     Response(int result,int exitcode):
//     result_(result),exitcode_(exitcode)
//     {}
// private:
//     int result_;//计算结果
//     int exitcode_;//计算结果是否可靠
// };
// void* sumCount(void* args)
// {
//     Request *rq=static_cast<Request*>(args);//强转换
//     Response *rsp=new Response(0,0);
//     for(int i= rq->start_ ;i<=rq->end_;i++)
//     {
//         cout<<rq->threadname_<<"...is running,calling..."<<i<<endl;
//         rsp->result_+=i;
//         usleep(10000);
//     }
//     delete rq;
//     return rsp;
// }
// int main()
// {
//     pthread_t pid;

//     Request *rq=new Request(1,100,"thread");
//     pthread_create(&pid,nullptr,sumCount,rq);

//     void* ret;
//     Response* rsp=static_cast<Response*>(ret);
//     pthread_join(pid,&ret);
//     delete rsp;
//     return 0;

// }



// void* threadRun(void *argc)
// {
//     while(1)
//     {
//         std::cout<<"new thread : "<<getpid()<<std::endl;
//         sleep(1);
//     }
//     pthread_exit((void*)100);//线程终止
//     //return (void*)100; 默认终止线程
// }

// int main()
// {
//     //创建线程
//     //PTHREAD_CANCELED
//     pthread_t  tid;
//     pthread_create(&tid,nullptr,threadRun,(void*)"thread1");//
//     while(true)
//     {
//         std::cout<<"main process: "<<getpid()<<std::endl;
//         sleep(1); 
//     }
//     void *retval;

//     pthread_join(tid,&retval);
//     std::cout<<"main thread quit: "<<(long long int)retval<<std::endl;

// }